import Vue from 'vue'
import Vuex from 'vuex'

import { setToken, getToken, removeToken } from '@/utils/auth'
import { userInfoAPI } from '@/api'
Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    // 如果给默认值的时候要考虑能不能取到值，不能取到给默认值
    tokenObj: getToken() || {},
    userInfo: {}
  },

  mutations: {
    // 提供一个修改的方法
    saveToken (state, payload) {
      // 把传进来的token对象赋值给tokenObj
      state.tokenObj = payload
      // 存到本地存储
      setToken(payload)
    },
    setUserInfo (state, payload) {
      state.userInfo = payload
    },
    logion (state) {
      // 清空userInfo
      state.userInfo = {}
      // 清空token
      state.token = {}
      // 清空本地存储的token
      removeToken()
    }
  },
  actions: {
    async reqUserInfo (context) {
      // 没有数据的话就发送请求
      if (!context.state.userInfo.name) {
        const res = await userInfoAPI()
        // 保存用户信息到vuex中
        context.commit('setUserInfo', res.data.data)
      }
    }
  }
})

export default store
